package testEnum;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: lishuo
 * Date: 2023-02-23
 * Time: 18:22
 */
//枚举类型
    //枚举是非常安全的，即使在类外通过反射也拿不到枚举类型【类外不能反射枚举对象】
public enum TestEnum {
    RED("red",1),
    BLACK("black",1),
    GREEN("green",1);

    private String color;
    private int ordinal;
    //枚举类型的构造方法默认都是私有的
    TestEnum(String color,int ordinal) {
        this.color = color;
        this.ordinal = ordinal;
    }

    public static void main(String[] args) {
        //以数组形式返回枚举类型的所有成员
        TestEnum[] testEnums = TestEnum.values();
        for (int i = 0; i < testEnums.length; i++) {
            //获取枚举类型的索引位置
            System.out.println(testEnums[i]+" 索引: "+testEnums[i].ordinal());
        }
        //valueOf将普通字符串转为枚举类型(必须是枚举类中定义的实例)
        TestEnum testEnum = TestEnum.valueOf("GREEN");
        //TestEnum testEnum2 = TestEnum.valueOf("GREEN2");//错误写法

        //compareTo() 比较两个枚举成员在定义时的顺序
        System.out.println(RED.compareTo(GREEN));
    }

    //可以在switch语句中使用：
    public static void main1(String[] args) {
        TestEnum color = RED;
        switch (color) {
            case RED:
                break;
            case BLACK:
                break;
            case GREEN:
                break;
            default:
                break;
        }
    }

}
